package com.dims_hsrc.data.service;

import com.dims_hsrc.data.domain.DataDirectMapping;
import com.dims_hsrc.data.domain.DataDirectMappingResult;
import java.util.List;

/**
 * 直接映射Service接口
 *
 * @author 赵浩然
 */
public interface IDataDirectMappingService {
    /**
     * 查询直接映射
     *
     * @param id 直接映射主键
     * @return 直接映射
     */
    public DataDirectMapping getOne(String id);

    /**
     * 查询直接映射列表
     *
     * @param mapping 直接映射
     * @return 直接映射集合
     */
    public List<DataDirectMapping> list(DataDirectMapping mapping);

    /**
     * 新增直接映射
     *
     * @param mapping 直接映射
     * @return 结果
     */
    public int add(DataDirectMapping mapping);

    /**
     * 修改直接映射
     *
     * @param mapping 直接映射
     * @return 结果
     */
    public int update(DataDirectMapping mapping);

    /**
     * 批量删除直接映射
     *
     * @param ids 需要删除的直接映射主键集合
     * @return 结果
     */
    public int remove(String[] ids);

    /**
     * 删除直接映射信息
     *
     * @param id 直接映射主键
     * @return 结果
     */
    public int del(String id);

    /**
     * 根据结构ID获取映射列表
     *
     * @param sid 结构ID
     * @return 映射结果集合
     */
    public List<DataDirectMappingResult> getBySid(String sid);

    /**
     * 根据结构需求ID获取映射列表
     *
     * @param sdid 结构需求ID
     * @return 直接映射集合
     */
    public List<DataDirectMapping> getBySdid(String sdid);

    /**
     * 根据结构指标ID获取映射列表
     *
     * @param siid 结构指标ID
     * @return 直接映射集合
     */
    public List<DataDirectMapping> getBySiid(String siid);

    /**
     * 检查文本类型需求是否已被映射
     *
     * @param sdid 结构需求ID
     * @return 是否已被映射
     */
    public boolean checkDemandMapped(String sdid);

    /**
     * 检查文本类型技术指标是否已被映射
     *
     * @param siid 结构指标ID
     * @return 是否已被映射
     */
    public boolean checkIndicatorMapped(String siid);

    /**
     * 根据结构ID查询所有已映射的文本类型需求和技术指标
     *
     * @param sid 结构ID
     * @return 直接映射集合
     */
    public List<DataDirectMapping> getTextTypeMappingsBySid(String sid);

    /**
     * 检查某个需求和技术指标的组合是否已经存在映射
     *
     * @param sid 结构ID
     * @param sdid 结构需求ID
     * @param siid 结构指标ID
     * @return 是否已存在映射
     */
    public boolean checkMappingExists(String sid, String sdid, String siid);
} 